}
static void
-deserialize_error_func (const GtkCssSection *section,
- const GError *error,
- gpointer user_data)
+deserialize_error_func (const GskParseLocation *start_location,
+ const GskParseLocation *end_location,
+ const GError *error,
+ gpointer user_data)
{
- const GtkCssLocation *start_location = gtk_css_section_get_start_location (section);
- const GtkCssLocation *end_location = gtk_css_section_get_end_location (section);
NodeEditorWindow *self = user_data;
GtkTextIter start_iter, end_iter;
TextViewError text_view_error;
float radius;
};
+typedef struct _GskParseLocation GskParseLocation;
+
+struct _GskParseLocation
+{
+ gsize bytes;
+ gsize chars;
+ gsize lines;
+ gsize line_bytes;
+ gsize line_chars;
+};
+
/**
* GskParseErrorFunc:
- * @section: the #GtkCssSection where the error occurred
- * @error: the error
+ * @start: start of the error location
+ * @end: end of the error location
+ * @error: the error
* @user_data: user data
*
* The type of callback that is called when a parse error occurs
* during deserialization of node data.
*/
-typedef void (* GskParseErrorFunc) (const GtkCssSection *section,
- const GError *error,
- gpointer user_data);
+typedef void (* GskParseErrorFunc) (const GskParseLocation *start,
+ const GskParseLocation *end,
+ const GError *error,
+ gpointer user_data);
GDK_AVAILABLE_IN_ALL
GType gsk_render_node_get_type (void) G_GNUC_CONST;
} *error_func_pair = user_data;
if (error_func_pair->error_func)
- {
- GtkCssSection *section = gtk_css_section_new (gtk_css_parser_get_file (parser), start, end);
-
- error_func_pair->error_func (section, error, error_func_pair->user_data);
- gtk_css_section_unref (section);
- }
+ error_func_pair->error_func ((const GskParseLocation *)start,
+ (const GskParseLocation *)end,
+ error,
+ error_func_pair->user_data);
}
GskRenderNode *
};
static void
-deserialize_error_func (const GtkCssSection *section,
- const GError *error,
- gpointer user_data)
+deserialize_error_func (const GskParseLocation *start,
+ const GskParseLocation *end,
+ const GError *error,
+ gpointer user_data)
{
- char *section_str = gtk_css_section_to_string (section);
+ GString *string = g_string_new ("<data>");
- g_warning ("Error at %s: %s", section_str, error->message);
+ g_string_append_printf (string, ":%zu:%zu",
+ start->lines + 1, start->line_chars + 1);
+ if (start->lines != end->lines || start->line_chars != end->line_chars)
+ {
+ g_string_append (string, "-");
+ if (start->lines != end->lines)
+ g_string_append_printf (string, "%zu:", end->lines + 1);
+ g_string_append_printf (string, "%zu", end->line_chars + 1);
+ }
+
+ g_warning ("Error at %s: %s", string->str, error->message);
- g_free (section_str);
+ g_string_free (string, TRUE);
}
}
static void
-deserialize_error_func (const GtkCssSection *section,
- const GError *error,
- gpointer user_data)
+deserialize_error_func (const GskParseLocation *start,
+ const GskParseLocation *end,
+ const GError *error,
+ gpointer user_data)
{
- char *section_str = gtk_css_section_to_string (section);
+ GString *string = g_string_new ("<data>");
- g_warning ("Error at %s: %s", section_str, error->message);
+ g_string_append_printf (string, ":%zu:%zu",
+ start->lines + 1, start->line_chars + 1);
+ if (start->lines != end->lines || start->line_chars != end->line_chars)
+ {
+ g_string_append (string, "-");
+ if (start->lines != end->lines)
+ g_string_append_printf (string, "%zu:", end->lines + 1);
+ g_string_append_printf (string, "%zu", end->line_chars + 1);
+ }
+
+ g_warning ("Error at %s: %s", string->str, error->message);
- g_free (section_str);
+ g_string_free (string, TRUE);
}
static void
}
static void
-deserialize_error_func (const GtkCssSection *section,
- const GError *error,
- gpointer user_data)
+deserialize_error_func (const GskParseLocation *start,
+ const GskParseLocation *end,
+ const GError *error,
+ gpointer user_data)
{
- char *section_str = gtk_css_section_to_string (section);
+ GString *string = g_string_new ("<data>");
- g_print ("Error at %s: %s", section_str, error->message);
- *((gboolean *) user_data) = FALSE;
+ g_string_append_printf (string, ":%zu:%zu",
+ start->lines + 1, start->line_chars + 1);
+ if (start->lines != end->lines || start->line_chars != end->line_chars)
+ {
+ g_string_append (string, "-");
+ if (start->lines != end->lines)
+ g_string_append_printf (string, "%zu:", end->lines + 1);
+ g_string_append_printf (string, "%zu", end->line_chars + 1);
+ }
+
+ g_warning ("Error at %s: %s", string->str, error->message);
- free (section_str);
+ g_string_free (string, TRUE);
}
static const GOptionEntry options[] = {
}
static void
-deserialize_error_func (const GtkCssSection *section,
- const GError *error,
- gpointer user_data)
+deserialize_error_func (const GskParseLocation *start,
+ const GskParseLocation *end,
+ const GError *error,
+ gpointer user_data)
{
GString *errors = user_data;
- char *section_string;
+ GString *string = g_string_new ("<data>");
- section_string = gtk_css_section_to_string (section);
+ g_string_append_printf (string, ":%zu:%zu",
+ start->lines + 1, start->line_chars + 1);
+ if (start->lines != end->lines || start->line_chars != end->line_chars)
+ {
+ g_string_append (string, "-");
+ if (start->lines != end->lines)
+ g_string_append_printf (string, "%zu:", end->lines + 1);
+ g_string_append_printf (string, "%zu", end->line_chars + 1);
+ }
- g_string_append_printf (errors,
- "%s: error: ",
- section_string);
- g_free (section_string);
+ g_string_append_printf (errors, "%s: error: ", string->str);
+ g_string_free (string, TRUE);
if (error->domain == GTK_CSS_PARSER_ERROR)
append_error_value (errors, GTK_TYPE_CSS_PARSER_ERROR, error->code);